Methods, systems, and products for condensing messages

ABSTRACT

Methods, systems, and products are disclosed for condensing a message. The message is processed, and a portion of a header is removed. The removed portion is stored in memory. A reference is inserted into the header, and the reference references the stored portion. Because the reference replaces the removed portion, the message is condensed.

BACKGROUND

This application particularly relates to condensing messages for moreefficient transfer over communications networks.

Bandwidth is a consideration in the communications industry. Ascommunications customers demand more and more content and features,these demands challenge existing network infrastructures. Thecommunications and computer industries, therefore, are hard at workidentifying new ways of increasing bandwidth to meet these challenges.

CC/PP information provides an example. The CompositeCapabilities/Preference Profiles (or CC/PP) outlines a structure and avocabulary for describing the capabilities and user preferences of acommunications device. This CC/PP information has many uses, yet theCC/PP information may be used to adapt content to the user'scommunications device. Because content may be adapted to the device, thecontent is tailored to more efficiently utilize bandwidth.

This CC/PP information, however, can be verbose. While the CC/PPinformation helps efficiently utilize bandwidth, the CC/PP informationitself consumes precious bandwidth. Now, the bandwidth consumed by theCC/PP information is small when compared to most content. Still,however, the CC/PP information adds overhead to the transfer of messagesover communications networks. What is needed, then, are methods,systems, and products that further condense messages for more efficienttransfer over communications networks.

SUMMARY

The aforementioned problems, and other problems, are reduced, accordingto exemplary embodiments, using methods, systems, and products thatcondense messages. The exemplary embodiments of the present inventionremove one or more portions of a message and replace those removedportions with a reference. The removed portions are stored in memory,and the reference points to that memory location. The message, forexample, may be condensed by replacing portions and/or repetitiveinformation with a shorter and/or smaller Uniform Resource Indicator.The Uniform Resource Locator provides a reference to the removedportion(s). The condensed message, then, may be efficiently transmittedto a destination using less bandwidth. The destination need only thenquery for the removed portions. Once the destination queries for andobtains the removed portions, the destination may cache the removedportions for future access.

The exemplary embodiments include methods, systems, and products forcondensing a message. The message, having a header, is processed. Aportion of the header is removed and stored in memory. A reference tothe stored portion is inserted into the header. The reference replacesthe removed portion, thus condensing the message.

In another of the embodiments, a system condenses a message. The systemhas an agent application stored in memory, and a processor communicateswith the memory. The processor processes the message and removes aportion of a header. The processor stores the removed portion in memory.The processor inserts a reference into the header, with the referencereferencing the stored portion. The reference replaces the removedportion, thus condensing the message.

In yet another embodiment, a computer program product condenses amessage. The computer program product comprises a computer-readablemedium storing processor-executable instructions. These instructionscause the processor to remove a portion of a header. The processorstores the removed portion in memory. The processor inserts a referenceinto the header, with the reference referencing the stored portion. Thereference replaces the removed portion, thus condensing the message.

Other systems, methods, and/or computer program products according tothe exemplary embodiments will be or become apparent to one withordinary skill in the art upon review of the following drawings anddetailed description. It is intended that all such additional systems,methods, and/or computer program products be included within thisdescription, be within the scope of the claims, and be protected by theaccompanying claims.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

These and other features, aspects, and advantages of the exemplaryembodiments are better understood when the following DetailedDescription is read with reference to the accompanying drawings,wherein:

FIG. 1 is a schematic illustrating an agent application, according tothe present invention;

FIG. 2 is a schematic illustrating the condensing of messages, accordingto the present invention;

FIG. 3 is another schematic illustrating the condensing of messages,according to the present invention;

FIG. 4 is yet another schematic illustrating the condensing of messages,according to the present invention;

FIG. 5 is a schematic illustrating format changes, according to thepresent invention;

FIG. 6 is a schematic illustrating the condensing of CompositeCapability/Preference Profile information, according to the presentinvention;

FIGS. 7 and 8 are schematics illustrating a condensed HTTP request,according to the present invention;

FIG. 9 is a schematic illustrating a profile merge, according to thepresent invention;

FIG. 10 is a schematic illustrating format changes to the CompositeCapability/Preference Profile information;

FIG. 11 is a schematic illustrating a cancellation of the HTTP request,according to yet more embodiments of the present invention;

FIGS. 12 and 13 are schematics illustrating a switching of profiles,according to the present invention;

FIG. 14 is a schematic illustrating a suggestion of profiles, accordingto still more exemplary embodiments of the present invention;

FIG. 15 is a schematic illustrating creation of profiles, according tothe present invention;

FIGS. 16 and 17 are schematics illustrating more non-session approachesutilizing the present invention;

FIGS. 18-22 are schematics further illustrating the condensing of amessage, according to the present invention;

FIG. 23 is another schematic illustrating the condensing of a message,according to the present invention;

FIG. 24 is a block diagram showing an alternative operating environment,according to the present invention; and

FIG. 25 is a schematic illustrating more alternative operatingenvironments for the present invention.

DETAILED DESCRIPTION

The exemplary embodiments will now be described more fully hereinafterwith reference to the accompanying drawings. The exemplary embodimentsmay, however, be embodied in many different forms and should not beconstrued as limited to the embodiments set forth herein. Theseembodiments are provided so that this disclosure will be thorough andcomplete and will fully convey the scope of the invention to those ofordinary skill in the art. Moreover, all statements herein recitingembodiments, as well as specific examples thereof, are intended toencompass both structural and functional equivalents thereof.Additionally, it is intended that such equivalents include bothcurrently known equivalents as well as equivalents developed in thefuture.

Thus, for example, it will be appreciated by those of ordinary skill inthe art that the diagrams, schematics, illustrations, and the likerepresent conceptual views or processes illustrating the exemplaryembodiments. The functions of the various elements shown in the figuresmay be provided through the use of dedicated hardware as well ashardware capable of executing associated software. These functions maybe carried out through the operation of program logic, through dedicatedlogic, through the interaction of program control and dedicated logic,or even manually, the particular technique being selectable by theentity implementing the exemplary embodiments. Those of ordinary skillin the art further understand that the exemplary hardware, software,processes, methods, and/or operating systems described herein are forillustrative purposes and, thus, are not intended to be limited to anyparticular named manufacturer.

FIG. 1 is a schematic illustrating an agent application 20, according tothe present invention. The agent application 20 is a set ofprocessor-executable instructions that are stored in memory 22 of acomputer 24. A processor 26 communicates with the memory 22 and executesthe instructions represented by the agent application 20. The computer24 receives a message 28 from a communications device 30. The message 28communications via a communications network 32. As the followingparagraphs explain, the agent application 20 causes the processor 26 tocondense the message 28. Because the message 28 is condensed, themessage 28 is more efficiently sent, transmitted, or communicated to adestination 34.

The processor 26 removes one or more portions of the message 28. As theprocessor 26 processes the message 28, the processor 26 removes aportion 36 of the message 28. The processor 26 stores the removedportion 36 in local memory (such as the memory 22). The processor 26,additionally or alternatively, may remotely store the removed portion 36in a remote memory location 38 via the communications network 32. Theagent application 20 causes the processor 26 to replace the removedportion 36 with a reference 40. The reference 40 may be a UniformResource Indicator (URI) (or sometimes termed a Uniform Resource Locator(URL)) or other link or reference to the memory location where theremoved portion 36 is stored. Because the reference 40 replaces theremoved portion 36, the reference 40 may consume less bits/bytes thanthe removed portion 36. The processor 26 thus shortens the message 28and produces a condensed message 42. The condensed message 42 is thenmore quickly communicated via the communications network 32 to thedestination 34.

The destination 34 may also more efficiently process the condensedmessage 42. As the condensed message 42 is processed, a destinationprocessor 44 determines whether the information represented by thereference 40 has already been stored in destination memory 46 (e.g.,cache memory). If the information represented by the reference 40 is notfound in the destination memory 46, then the destination processor 44queries for and stores that information. When, however, the informationrepresented by the reference 40 is found in the destination memory 46,the destination processor 44 may quickly retrieve that information andcontinue processing. That is, because the information represented by thereference 40 was already stored in the destination memory 46, thedestination processor 44 need not process a query for that information.The reference 40, then, is especially useful in reducing processing ofredundant message portions.

FIG. 2 is a schematic further illustrating the condensing of messages,according to the present invention. The computer 24 again receives themessage 28, and the agent application 20 causes the processor 26 tocondense the message 28. Here, however, the message 28 may be packetizedaccording to a packet protocol, such that the message 28 comprises oneor more headers 48. The agent application 20 causes the processor 26 toremove at least a header portion 50 of at least one of the headers 48.That removed header portion 50 is stored in local memory (such as thememory 22) and/or at the remote memory location (shown as referencenumeral 38 in FIG. 1). The agent application 20 causes the processor 26to replace the removed header portion 50 with the reference 40. Thereference 40 may be any designation or notation that references thememory location where the removed header portion 50 is stored. Becausethe reference 40 replaces the removed header portion 50, the processor26 thus produces the condensed message 42. The condensed message 42 isthen more quickly communicated via the communications network 32 to thedestination 34.

Any packet protocol is suitable for this invention. As those of ordinaryskill in the art understand, sometimes network and computer informationis packetized (or “framed”) for use in packet networks. The informationis grouped into packets according to a packet protocol. As those ofordinary skill in the art also understand, there are many packetprotocols. Some of the more well-known packet protocols include TCP/IP,IPX/SPX, AppleTalk, and SNA. Some standards organizations, such as theI.E.E.E., issue standards for packetizing data. Because some networksare “mixed”—that is, the network receives and handles packets ofdiffering protocols, a “translator” determines the particular packetprotocol and the appropriate destination for each packet. Because thebasics of packetizing and packet protocols are well-known, thisspecification will not further explain packetized messages.

FIG. 3 is another schematic illustrating the condensing of messages,according to the present invention. Here, when the message 28 isreceived, the agent application 20 causes the processor 26 to replacemultiple portions of the message 28 with the reference 40. As theprocessor 26 processes the message 28, the processor 26 removes multipleportions 52 within the message 28. Those multiple portions 52, however,are stored at a single memory location 54. The single memory location 54may be within the local memory (such as the memory 22), or the singlememory location 54 may be at the remote memory location (shown asreference numeral 38 in FIG. 1). Whatever the single memory location 54,the processor 26 inserts the reference 40 into the message 28. Thereference 40 thus replaces the multiple portions 52, such that theprocessor 26 produces the condensed message 42. Whenever the message 28contains repetitive information, that repetitive information may beremoved. Each occurrence of the repetitive information is replaced bythe reference 40. Because the reference 40 points or references therepetitive information, the message 28 is condensed.

FIG. 4 is yet another schematic illustrating the condensing of messages,according to the present invention. Here, the processor 26 condenses themessage 28 by removing multiple portions of one or more headers 48. Whenthe message 28 is packetized, the agent application 20 causes theprocessor 26 to remove multiple portions 56 of the headers 48. Each ofthose multiple, removed portions 56 is replaced with the reference 40.The agent application 20 may additionally or alternatively instruct theprocessor 26 to merge all the references 40 within a single header 58.All the references 40, for example, may be merged into a single profile,statement, or portion of the header 58. So, rather than having multiplereferences 40, the processor 26 may further condense the message 28 bymerging all the references 40 into a similar message location.

FIG. 5 is a schematic illustrating format changes, according to thepresent invention. Here, when one or more portions of the message 28 areremoved and stored, the agent application 20 may change the format ofany of those removed portions. Recall the computer 24 receives themessage 28, and the agent application 20 causes the processor 26 tocondense the message 28. The processor 26 removes one or more portions36 of the message 28 and stores those removed portions 36 in localmemory (such as the memory 22) and/or in the remote memory location(shown as reference numeral 38 in FIG. 1). The agent application 20causes the processor 26 to replace the removed portions 36 with one ormore of the references 40.

The agent application 20 may make those removed portions 36 availablefor auxiliary processing. That is, the removed portions 36 may bealtered or changed to suit any purpose. When the agent application 20instructs the processor 26 to remove portions of the message 28, theagent application 20 may decide that those removed portions 36 could bereformatted for simplicity, for brevity, or for compatibility. The oneor more removed portions 36 may be verbose or complicated, and the agentapplication 20 may simplify, collapse, or compress those portions. Theagent application 20 may reformat the removed portions 36 to suit theneeds of the destination 34. The agent application 20 may even make theremoved portions 36 available for subsequent processing by anotherapplication or another computer 60 (via the communications network 32).Whatever the reasons, when the processor 26 removes portions of themessage 28, the agent application 20 may change those removed portions.FIG. 5, then, illustrates reformatted, removed portions 62. Thesereformatted, removed portions 62 are stored in the local memory (such asthe memory 22). The reformatted, removed portions 62 may also be storedin the remote memory location (shown as reference numeral 38 in FIG. 1).The reformatted, removed portions 62, wherever stored, have an alternateformatting from that of the originally removed portions 36. Thedestination 34, then, may select whatever alternate formatting bestsuits current needs.

FIGS. 6-11 apply the present invention to CompositeCapability/Preference Profile (CC/PP) information. The present inventionmay be used to condense Composite Capability/Preference Profileinformation, thus providing more efficient communication of suchinformation. As those of ordinary skill in the art understand, CC/PPinformation provides a structure and a vocabulary for describing acommunications device's hardware capabilities, software capabilities,and user preferences. Because Composite Capability/Preference Profileinformation is already known, this specification will not provide adetailed explanation of such information. If, however, the readerdesires a detailed explanation, the reader is invited to consult W3C,Composite Capability/Preference Profiles (CC/PP): Structure andVocabularies, available from the World Wide Web Consortium (W3C), 32Vassar Street, Room 32-G515, Cambridge, Mass. 02139 USA and from theEuropean Office of the World Wide Web Consortium (W3C), 2004, route desLucioles, BP 93, 06902 Sophia-Antipolis Cedex France, and incorporatedherein by reference in its entirety.

FIG. 6 illustrates the Composite Capability/Preference Profileinformation 64. The Composite Capability/Preference Profile (CC/PP)information 64 is contained within the message 28 received from thecommunications network 32. The agent application 20, operating withinthe computer 24, condenses the message 28 for more efficienttransmission or communication to the destination 34. Here, however, thecomputer 24 represents any network device that may receive and/orprocess the message 28. The computer 24, for example, may be a proxyserver, a web server, a wireless access point, or any other computer orserver communicating via the communications network 32.

As the computer 24 receives the message 28, the agent application 20instructs the processor 26 to inspect the headers 48 of the packets 66.The agent application 20, in this embodiment, instructs the processor 26to inspect the headers 48 for the Composite Capability/PreferenceProfile information 64. When the processor 26 observes the CompositeCapability/Preference Profile information 64, the agent application 20instructs the processor 26 to inspect that CompositeCapability/Preference Profile information 64 for profile differenceinformation 66. As those of ordinary skill in the art recognize, theprofile difference information 66 (or “profile diffs”) describesdifferences between default settings and user settings. The user'scommunications device 30, for example, may have display settings, videosettings, hardware settings, software settings, or any other settingsthat differ from a manufacturer's default settings. The profiledifference information 66, then, describes these differences.

The agent application 20 condenses the profile difference information66. Because the profile difference information 66 can be a large,verbose document, the agent application 20 may replace the profiledifference information 66 with one or more of the references 40. Theprocessor 26 replaces the verbose profile difference information 66 withthe shorter and simpler reference 40. The processor 26 stores theremoved profile difference information (shown as reference numeral 68)in local memory (such as the memory 22) and/or in the remote memorylocation (shown as reference numeral 38 in FIG. 1). The agentapplication 20 causes the processor 26 to replace the removed profiledifference information 68 with, for example, a Uniform ResourceIndicator/Locator (URI/URL) 69 to the memory location where the removedprofile difference information 68 is stored. Because the shorter/smallerreference 40 replaces the larger, removed profile difference information68, the processor thus shortens the message 28 and produces thecondensed message 40. The condensed message 40 is then more quicklycommunicated via the communications network 32 to the destination 34.

The reference 40 condenses the message 28. When the message 28 isreceived by the processor 26, the message 28 may include profileheaders, Uniform Resource Indicators/Locators to default profiles, andthe profile difference information 66. The agent application 20,however, replaces the profile difference information 66 with theexternal references 40 (such as the URI/URL 69). The agent application20 thus collapses the message 28 by removing the profile differenceinformation 66 from the message 28. The agent application 20 augmentsthe Composite Capability/Preference Profile information 64 with thereference 40.

FIGS. 7 and 8 provide a further explanation. FIG. 7 is a schematicillustrating a condensed HTTP request 70, according to the presentinvention. Here the computer 24 acts as a proxy server 72 and receivesthe message 28. The message 28 is an HTTP request 74. The agentapplication 20 instructs the processor 26 to inspect the message 28 forthe Composite Capability/Preference Profile information 64. When theprocessor 26 observes the profile difference information 66, theprocessor 26 removes the profile difference information 66 and storesthe removed profile difference information 68 in the local memory 22.The processor 26 then inserts the shorter and smaller reference 40.Because the shorter/smaller reference 40 replaces the removed profiledifference information 68, the processor thus shortens the message 28and produces the condensed message 40. The condensed message 40 is thenmore quickly communicated via the communications network 32 to thedestination 34.

FIG. 8 illustrates the effectiveness of this invention. FIG. 8illustrates the proxy server 72 receiving the following verbose HTTPrequest 74:

GET /video.avi HTTP/1.1 Host: www.flashpoint.com Opt:“http://www.w3.org/1999/06/24-CCPPexchange” ; ns=19 19-Profile:“http://www.flashpoint.com/hw”, “http://www.flashpoint.com/sw”, “1-P1GRkSjKK50aTWXXndFcSQ==” 19-Profile-Diff-1: <?xml version=“1.0”?> <RDFxmlns:RDF=“http://www.w3C.org/TR/WD-rdf-syntax#”  xmlns:PRF=“http://www.w3C.org/TR/WD-profile-vocabulary#”>  <RDF:Bag>  <RDF:Description about=“HardwarePlatform”   PRF:Default=“http://www.nokia.com/profiles/2160”    PRF:Memory=“32mB”/>   <RDF:Description about=“SoftwarePlatform”   PRF:Default=“http://www.symbian.com/profiles/pda”    PRF:Sound=“Off”   PRF:Images=“Off” />   <RDF:Description about=“EpocEmail”    PRF:Default=    “http://www.symbian.com/epoc/profiles/epocemail” />  <RDF:Description about=“EpocCalendar”   PRF:Default=“http://www.symbian.com/epoc/profiles/epoccal”/>   <RDF:Description=“UserPreferences” PRF:Language=“English” /> </RDF:Bag> </RDF>

The agent application 20, then, collapses the message 28 into thefollowing condensed message 40:

GET /video.avi HTTP/1.1 Host: www.flashpoint.com Opt:“http://www.w3.org/1999/06/24-CCPPexchange” ; ns=19 19-Profile:“http://www.flashpoint.com/hw”, “http://www.flashpoint.com/sw”,“http://66.83.118.224/profile-diff.xml”Here, then, the profile header now includes the reference 40. Thereference 40 includes an Internet Protocol address 76 and a file name78. The Internet protocol address 76 (“http://66.83.118.224”) refers toan I.P. address where the removed profile difference information 68 isstored. In this example, the removed profile difference information 68is locally stored in the memory 22, so the I.P. address represents anetwork address for the proxy server 72 (e.g., the computer 24). Thefile name 78 (“profile-diff.xml”) is a unique filename that refers tothe removed profile difference information 68. This example thus usesthe Hyper Text Transfer Protocol (HTTP). The exemplary embodiments,however, may utilize the File Transfer Protocol (FTP), in which case theURL is identical except the “http” becomes “ftp” (e.g.,“ftp://66.83.118.224/profile-diff.xml”).

The removed profile difference information 68 is stored as a file 80. Inthis example the processor 26 stored the removed profile differenceinformation 68 in the local memory 22. The processor 26, however, couldlocally or remotely store the removed profile difference information 68in a database. The file “profile-diff.xml” 80 contains the removedprofile difference information 68. That removed profile differenceinformation 68, for example, may contain the following statements:

<?xml version=“1.0”?> <RDFxmlns:RDF=“http://www.w3C.org/TR/WD-rdf-syntax#”   xmlns:PRF=“http://www.w3C.org/TR/WD-profile-vocabulary#”>  <RDF:Bag>  <RDF:Description about=“HardwarePlatform”    PRF:Default=“http://www.nokia.com/profiles/2160”   PRF:Memory=“32mB” />   <RDF:Description about=“SoftwarePlatform”    PRF:Default=“http://www.symbian.com/profiles/pda”    PRF:Sound=“Off”     PRF:Images=“Off” />   <RDF:Descriptionabout=“EpocEmail”      PRF:Default=     “http://www.symbian.com/epoc/profiles/epocemail” />  <RDF:Description about=“EpocCalendar”    PRF:Default=“http://www.symbian.com/epoc/profiles/epoccal”/>   <RDF:Description=“UserPreferences” PRF:Language=“English” /> </RDF:Bag> </RDF>

The agent application 20 may use a message digest 82. The reference tothe profile difference in the profile-header may be comprised of anindex and the message digest value 82. The index is used to identify thename of the HTTP request header that contains the profile differenceinformation. In addition to the index in the profile differencereference, the exemplary embodiments may also consider the namespace forthe CC/PP information (as defined in the “Opt” header). In the exampleshown in FIG. 8, the reference to the profile difference is“1-P1GRkSjKK50aTWXXndFcSQ==”. Combining the index in the profiledifference reference of “1” and the namespace of “19” allows a system toknow that the profile difference is the HTTP header with the name“19-Profile-Diff-1”. The message digest 82 is the value after the “1-”in the profile difference reference. The message digest 82 is a uniquecomputed value based on the contents of the profile difference. Theagent application 20 may use the message digest value 82 to identifywhether it has already processed the same profile difference. Whenprocessing a HTTP request, the agent application 20 may check themessage digest of a profile difference against the message digests ofits stored profile diffs. If the agent application 20 detects that ithas a profile diff stored that has the same message digest value, thenthe agent application 20 has less work to do. The agent application 20removes the profile difference from the original message 28 and replacesthe profile difference reference in the profile header with thereference 40. The agent application 20, in other words, operates asbefore, but the agent application 20 skips the step of extracting theprofile difference to the file 80.

When the destination (shown as reference numeral 34 in FIG. 7) receivesthe condensed HTTP request 70, the destination 34 need do nothingspecial or extraordinary. The destination 34, in other words, need notchange to process the condensed HTTP request 70. Even though theoriginally received HTTP request 74 has been condensed, the condensedHTTP request 70 simply resembles an ordinary or regular request. Thedestination 34 fetches each reference 40 (such as by querying theUniform Resource Indicator/Locator), processes the informationrepresented by each reference 40, and arranges the results according toprecedence. The destination 34 thus has all the information needed fortailoring the requested content. The condensed HTTP request 70 thuscreates no change in the operation of the destination 34.

The agent application 20 may retain the removed profile differenceinformation 68 for any length of time. Recall the removed profiledifference information 68 is stored as the file 80. The agentapplication 20, of course, may delete that file 80 when additionalmemory is desired. The agent application 20 might detect that theremoved profile difference information 68 is no longer needed (such as alack of usage), so the information 68 is deleted. Remember, however,that the removed profile difference information 68 may be applicable tomultiple users. Many wireless customers, for example, utilize a NOKIA®device, so the agent application 20 need not maintain user-specificcached versions. The removed profile difference information 68 may becommon to multiple users and, thus, frequently accessed. The agentapplication 20, then, may retain that common profile differenceinformation 68 in long-term memory for future use.

FIG. 9 is a schematic illustrating a profile merge, according to thepresent invention. Here the computer 24 (acting as the proxy server 72)merges one or more profile references, one or more profile differences,and one or more of the references 40 into a single statement. Becauseall this information is condensed, the agent application 20 condensesthe message 28 and relieves the workload of a downstream server (such asthe destination 34 shown in FIGS. 1-7). When the processor 26 receivesthe HTTP request 74, the processor 26 merges all profile references andall the profile differences into a single profile. FIG. 9, then,illustrates the proxy server 72 condensing the HTTP request 74 as

GET /video.avi HTTP/1.1 Host: www.flashpoint.com Opt:“http://www.w3.org/1999/06/24-CCPPexchange” ; ns=19 19-Profile:“http://66.83.118.224/merged-profile-diff.xml”Here the IP address 76 (“http://66.83.118.224”) in the profile headerrefers to the IP address where the profile information is stored. Inthis example, the profile information is locally stored in the memory22, so the I.P. address represents a network address for the computer 24(e.g., the proxy server 72). The file name 78 in the URI(“merged-profile-diff.xml”) is a unique name that refers to the profilecreated by merging the profiles located at http://www.flashpoint.com/hw,http://www.flashpoint/sw, and Profile-Diff-1. The proxy server 72 thushas the file 80 named “merged-profile-diff.xml” that contains theresults of fetching the two referenced profiles and the profiledifference(s). The condensed HTTP request 70 has a single profilereference (“merged-profile-diff.xml”), even though the agent application20 merged two profiles (referenced in the profile header) and oneprofile difference (referenced in the profile header that was embeddedin the HTTP request). Remember, the agent application 20 fetchesprofiles from an external source using the reference, while profiledifferences are an internal reference to another header embedded in anHTTP request that contains the text of the profile diff. The destinationneed only fetch that single profile reference, and the destination neednot fetch two profiles and merge them with the profile differenceembedded in the request 74 (the agent application 20, after all, hasalready performed this operation). The condensed HTTP request 70,therefore, relieves the workload on the destination 34. The condensedHTTP request 70 also relieves the workload on servers at the locationsat which the URI/URL profile references point.

The original profile repository (“www.flashpoint.com”) experiences areduced load. Normally the destination 34 would cache a profile and sendHTTP requests to the profile repository to check if the cached profilewas stale. Now, however, that the proxy server 72 merges the profile andstores the result, the original profile repository is not contacted forprofile fetches or staleness checks. The destination 34, instead,contacts the proxy server 72 to fetch the merged profile and performstaleness checks.

The proxy server 74 can also help to reduce its own workload and theworkload on the destination server. Specifically, the proxy server 74can include a last modified date of the merged profile in the HTTPrequest to the destination 34. This last modified date preemptivelyprovides the destination 34 with the result of a stale check, allwithout having to contact the proxy server 74. Normally, if thedestination 34 cached the merged profile, the destination 34 would senda request to the profile repository to check if the profile was stale.Now, the destination 34 receives the last modified date in the requestand no longer is forced to always contact the proxy server 74 to testfor staleness. If the cached version is stale, the destination 34 wouldfetch the newer version of the profile from the proxy server 74.However, if the cached version is still valid, the destination 34 hassaved itself an HTTP request to the proxy server 74 for the stale check.

The agent application 20 may alternatively only perform a partial merge.The computer 24 (e.g., the proxy server 72), for example, may havealready cached the profile identified by http://www.flashpoint.com/sw,but the computer 24 may not have cached the profile athttp://www.flashpoint.com/hw. That is, when the HTTP request 74 hasmultiple URI/URL references to profiles, the agent application 20 maynot pause and fetch all those references. To avoid further delaying theHTTP request 74, the agent application 20 may decide to only merge the“19-Profile-Diff-1” and Profile at http://www.flashpoint.com/sw. Theresultant condensed message thus contains the following profile header:

Profile: “http://www.flashpoint.com/hw”,“http://66.83.118.224/partially-merged-profile.xml”.

The agent application 20 may fetch and cache the missing profile(“http://www.flashpoint.com/hw”) on a separate thread to avoid delayingthe initial HTTP request 74. The agent application 20 may also includecode or instructions that help ensure the overriding order is maintainedaccording to the specification(s).

A partial profile merge may also be useful for common device types.Realize, again, that many wireless customers, for example, utilize aNOKIA® device. Even though many people utilize NOKIA® phones, theseusers may have unique sets of installed software programs. Any mergingof the common NOKIA® hardware profile with unique software profilesmight produce a large and/or inefficient result. Here, then, the agentapplication 20 may find it more efficient to only partially mergeprofiles. The agent application 20, for example, may locally cache thosehardware profiles, yet, not perform a merge with software profiles. Thedownstream destination 34, then, may cache the NOKIA® hardwareprofile(s) and simply fetch the user-specific set of software profiles.A partial profile merge, in other words, may be more efficient, so thatrequests are not always optimized.

FIG. 10 is a schematic illustrating format changes to the CompositeCapability/Preference Profile information 64, according to still moreembodiments of the present invention. Here, when the agent application20 removes and stores some or all of the Composite Capability/PreferenceProfile information 68, the agent application 20 may translate thatremoved Composite Capability/Preference Profile information 68 intoother formats 84. The agent application 20, for example, may translate aremoved CC/PP Profile into one or more different formats that provideany benefit over the standard CC/PP RDF format serialized as XML. Theagent application 20 may itself performs this translation, or the agentapplication 20 may communicate the removed CompositeCapability/Preference Profile information 64 to another computer forthis translation. Because the agent application 20 makes these alternateformats 84 available, the destination 34 may then retrieve any formatthat best suites its needs.

As FIG. 10 illustrates, the computer 24 receives the HTTP request 74.When the processor 26 observes the Composite Capability/PreferenceProfile information 64, the agent application 20 condenses the HTTPrequest 74 (as the above paragraphs explain). Here, however, in additionto storing the removed Composite Capability/Preference Profileinformation 68 as an RDF document serialized as XML, the agentapplication 20 may also store the Composite Capability/PreferenceProfile information 68 in the other formats 84. As those of ordinaryskill in the art recognize, when an RDF document is serialized as XML,that “RDF in XML” may be difficult to parse. These other formats 84,then, may provide any benefit desired, such as being quicker to parse orbeing more compact. The agent application 20 may add a header 86 to thecondensed HTTP request 70. The destination 34 may inspect this header 86and know what other formats have been additionally produced. The agentapplication 20, for example, may communicate the following condensedmessage 70.

GET /video.avi HTTP/1.1 Host: www.flashpoint.com Opt:“http://www.w3.org/1999/06/24-CCPPexchange” ; ns=19 19-Profile:“http://66.83.118.224/profile-diff.xml” Proxy-Profile-Formats: wbxml,xmlHere, then, the statement “Proxy-Profile-Formats: wbxml, xml” describesthe other available formats. The agent application 20 has thusadditionally formatted the removed Composite Capability/PreferenceProfile information 68 into a WAP Binary XML (WBXML) format and into anXML format. These pure XML formats may not contain RDF formatting. Theagent application 20 may additionally make available the originalformatting (e.g., RDF serialized as XML). The destination 34 may simplychoose and fetch its desired format. The destination 34, for example,may add a request parameter to the profile fetch operation to indicatethe profile format. For example, it could use this HTTP request to fetchthe wbxml format:

http://66.83.118.224/profile-diff.xml?format=wbxml

FIG. 11 is a schematic illustrating a cancellation of the HTTP request74, according to yet more embodiments of the present invention. Here theproxy server 72 again receives the HTTP request 74 (e.g., the message28). The HTTP request 74 is shown originating from the communicationsdevice 30, such as a cellular phone 88. When the processor 26 observesthe Composite Capability/Preference Profile information 64, the agentapplication 20 again condenses the HTTP request 74 (as the aboveparagraphs explain). The condensed message 70 is then communicated viathe communications network 32 to the destination 34. The destination 34is shown as a web server 90. Ordinarily the web server 90 would adaptthe requested content according to the Composite Capability/PreferenceProfile information 64 (as is already known).

Here, however, the web server 90 declines to adapt the requestedcontent. The web server 90 may, for many reasons, decide to not adaptthe requested content according to the Composite Capability/PreferenceProfile information 64. If, for example, a profile repository isunreachable, the web server 90 would be unable to obtain a profile thatis required to adapt the requested content. The web server 90, inanother situation, may have reserved processing time for other requests(such as for premium customers), so the web server 90 declines to tailorthe requested content according to the Composite Capability/PreferenceProfile information 64. Whatever the reason, the web server 90 returns aresponse 92. The response 92 may include or describe unaltered contentand/or an error message.

The agent application 20, then, may cancel the request. The agentapplication 20 inspects the response 92 to determine whether bandwidthmay be conserved. When, for example, the web server 90 declines to adaptthe requested content, the response 92 may include the unalteredcontent. This unaltered content, of course, is unsuited to thecapabilities of the communications device 30 (e.g., the cellular phone88). If the response 92 includes an error message, the communicationsdevice 30 (and the agent application 20) knows that the HTTP request 74cannot be fulfilled. The agent application 20, then, may examine theresponse 92 to detect whether or not the web server 90 tailored therequested content. The agent application 20, for example, may examinethe profile-warning headers in the HTTP response 92 from the web server90. If the web server 90 fails to adapt the requested content, the agentapplication 20 may cancel the HTTP request 74, thereby saving bandwidthfor both the communications device 30 and the web server 90.

This cancellation may also be applied when the web server 90 does notunderstand CC/PP based requests. The agent application 20 may detectthat profile-warning headers are not in the HTTP response 92. The agentapplication 20 thus knows that the HTTP request 74 was not adapted tothe capabilities of the communications device 30. Although the requestedcontent was not adapted, the HTTP request 74 need not be rejected. Theagent application 20 may examine the HTTP response 92 (e.g, thereturned, unaltered content) and compare it against the capabilitiesdescribed by the Composite Capability/Preference Profile information 66stored in the memory 22. If the returned, unaltered content is generallycompatible with the capabilities of the communications device 30 (e.g.,the cellular phone 88), the agent application 20 may forward thereturned, unaltered content to the communications device 30. The agentapplication 20, however, may forward an error response 94 indicating whythe requested content is unavailable (e.g., the resolution is too largeto suit a display device 96 of the cellular phone 88). For example, theagent application 20 may detect that a video resolution is 1024×768,whereas the Composite Capability/Preference Profile information 66indicates the display device 96 has a maximum resolution of 320×200. Theagent application 20 may return the error response 94, and the errorresponse indicates the web server's returned, unaltered content isincompatible. The error response 94 may also include a Uniform ResourceIndicator/Locator so that the end user of the communications device 30may override this automatic cancellation.

The agent application 20 may also exchange rules with the communicationsdevice. As those of ordinary skill in the art understand, thecommunications device 30 (such as the cellular phone 88) may store andexecute a user agent 98. The user agent 98 is any software applicationthat sends the HTTP request 74. The user agent 98, for example, may be aweb browser or any other application. Here, then, the user agent 98 mayactively participate with the agent application 20 in exchanging rules100. These rules 100 describe when to cancel the HTTP request 74. Theuser agent 98, for example, may indicate that it still wants a videobecause the user is going to save that video to offline storage.

FIGS. 12 and 13 are schematics illustrating a switching of profiles,according to the present invention. Here, when the destination 34 (e.g.,the web server 90) declines or fails to adapt the requested content, theagent application 20 may re-send the condensed HTTP request 70 withdifferent profiles. The agent application 20 may recreate the condensedHTTP request 70 using one or more different profiles. The agentapplication 20, then, sends a modified HTTP request 102 to the webserver 90. This modified HTTP request 102 comprises one or moredifferent profiles 104. The agent application 20, for example, mayswitch to a more generic profile or switch the profile a differentdevice type. The agent application 20 may be configured to retry as manytimes as desired, with each attempt switching to a different profile. Anadministrator, or the user of the communications device 30, however, maynot want the agent application 20 to indefinitely retry differentprofiles. Each attempt would consume time and bandwidth, and theadministrator or user may make configurations that limit such retries.

The agent application 20 receives the HTTP request 74 from thecommunications device 30. The agent application 20 condenses the HTTPrequest 74 into the condensed HTTP request 70 (as the above paragraphsexplain). The condensed HTTP request 70 is then communicated via thecommunications network 32 to the web server 90. The web server 90 returnsends the response 92, indicating the requested content was not adapted,for whatever reason.

FIG. 13 illustrates the modified HTTP request 102. Because the condensedHTTP request 70 failed, here the agent application 20 retries. The agentapplication 20 uses one or more different profiles, or eliminates one ormore profiles, to create the modified HTTP request 102. The agentapplication 20, for example, may retry using a profile that onlycontains a maximum resolution of the display device 96. The agentapplication 20, then, sends the modified HTTP request 102 to the webserver 90. FIG. 13 illustrates the web server 90 responding with adaptedcontent 106. This adapted content 106 no longer fails, for example,because of an unreachable profile repository. The agent application 20,as an additional example, may switch to a profile of a similar devicethat has previously had content successfully adapted. The agentapplication 20 would then retry using that similar-device profile.

The agent application 20 and the web server 90 may make other exchanges.The agent application 20 and the web server 90, for example, mayestablish a profile exchange to detect compatibilities. The agentapplication 20 may send a collection of profiles to the web server 90.The web server 90 may then send an acceptance or rejection for eachprofile in the collection. The agent application 20 would then know whatprofiles are acceptable to the web server 90. When the agent application20 receives future requests, the agent application 20 knows ahead oftime whether the web server 90 accepts that profile.

FIG. 14 is a schematic illustrating a suggestion of profiles, accordingto still more exemplary embodiments of the present invention. Here, whenthe destination 34 (e.g., the web server 90) declines or fails to adaptthe requested content, the agent application 20 may suggest anotherprofile. The web server 90, as explained with reference to FIG. 11, mayreturn the response 92, indicating the requested content was notadapted. The agent application 20 examines the response 92 and thusknows whether or not the web server 90 tailored the requested content.When the web server 90 fails to adapt the requested content, the agentapplication 20 may suggest one ore more alternate profiles. Thesealternate profiles may be suggested for any reason, such as resolvingprofile incompatibilities when the user at the communications device 30cannot view content.

FIG. 14, then, illustrates this suggestion process. The agentapplication 20 examines the response 92 and thus knows the web server 90failed to tailor the requested content. The agent application 20generates a message 108 and sends the message 108 to the requestingcommunications device 30. The message 108 communicates via thecommunications network 32. The message 108 contains any type ofinformation, data, or content that suggests alternate profiles. FIG. 14,for example, illustrates the message 108 as an HTML page 110 thatcontains links 112 to the alternative profiles. The communicationsdevice 30 processes the message 108 and visually and/or audibly presentsthe links 112 to the user. The user of the communications device 30 maythen select one or more of the links 112, and that selection 114 iscommunicated back to the computer 24. When the computer 24 receives theuser's selection 114, the agent application 20 instructs the processor26 to recreate the condensed HTTP request using the user's selectedprofile. The agent application 20, then, sends the modified HTTP request102 to the web server 90. If the web server 90 adapts the requestedcontent, then the user's selected profile was successful. If, however,the web server 90 still fails to adapt the requested content, the agentapplication 20 will retry with another suggested profile. The agentapplication 20 could thus repeat this suggestion process until the webserver 90 adapts the requested content according to the user's selectedprofile. The agent application 20, however, could be configured to limitthe number of suggestions to conserve bandwidth and to reduce waittimes.

Alternate profiles could be automatically selected. While the user mayselect one or more of the links 112 to another profile, the user agent98 may autonomously make that selection on behalf of the user. Themessage 108 may contain a list 116 of alternate profile candidates, andthe user agent 98 may select which profile to retry. The user agent 98may use any hardware criteria, software criteria, or other criteria toselect the alternate profile. The agent application 20 may evenpreemptively start the suggestion process. The agent application 20 mayalso facilitate the suggestion process between the user agent 98 and theweb server 90.

The agent application 20 may already know acceptable profiles. The agentapplication 20 may have a priori knowledge of which profiles areaccepted by the destination 34 (e.g., the web server 90). The agentapplication 20, for example, may store and track which profiles werepreviously accepted by the web server 90. The agent application 20 maymaintain a historical log of acceptable profiles. The agent application20 could alternatively or additionally query the web server 90 for alist of acceptable profiles, or the agent application 20 may query theweb server 90 with various profiles to determine which profiles areacceptable. The agent application 20 may additionally probe oralternatively send an HTTP request to the web server 90 with a specificprofile. The agent application 20 need not perform this request onbehalf of any particular user—the agent application 20 sends thisrequest to determine which profiles the destination 30 (e.g., the webserver 90) successfully adapted content.

FIG. 15 is a schematic illustrating creation of profiles, according tothe present invention. Here the agent application 20 facilitates aprocess through which profiles are built or created to adapt content.The destination 34 (e.g., the web server 90), for example, may require aparticular profile, but that particular profile is unavailable or thecommunication device's profile is invalid. FIG. 15, then, illustrateshow the agent application 20 may initiate a profile building process.The agent application 20, for example, may host, call, or invoke aweb-based application 118 that guides the user (at the communicationsdevice 30) through this profile-creation process. The web-basedapplication 118 may be stored at the computer 24, may be stored at thedestination 34, or may be client-side stored and executed (e.g., at theuser's communications device 30).

FIG. 15, then, illustrates this process of creating profiles. When thecomputer 24 receives the HTTP request 74 from the communications device30, the agent application 20 may first inspect the HTTP request 74. Ifthe agent application 20 detects an invalid or non-existing profile, theagent application 20 may respond with a message 120. The message 120communicates back to the communications device 30 and informs the userof the invalid or non-existing profile. While the message 120 may haveany information, data, and/or formatting, the message 120 is illustratedas including one or more web pages 122. These web pages 122 (perhapsHTML pages) allow the user to enter or select appropriate settings.These settings, for example, may alter or affect a web site in generalor a specific piece of content. When, for example, the user (at thecommunications device 30) requests a video, the user may be shown anHTML form of the video with two input fields. One input field, forexample, accepts an input for width, while a second input field acceptsanother input for height. The user, then, enters the appropriate datafor the communications device 30. The user's selection 124 iscommunicated to the agent application 20, and the agent application 20may modify the original HTTP request 74 according to the selection 124.The user's selection 124 may additionally or alternatively communicateto the destination 34, where the destination 34 (e.g., the web server90) accepts those selections as the user's profile for display size.

Another embodiment may be utilize without keyboards or keypads. When theagent application 20 detects an invalid or non-existing profile, theagent application 20 return sends the message 120. The message 120 mayagain include the one or more web pages 122 (e.g., HTML pages). The oneor more web pages 122 may include one or more links. When thecommunications device 30 processes the one or more web pages 122, thelinks may be visually arranged in a grid on the display device 96. Theuser is instructed to click a link that appears in a lower right cornerof the grid. The user's grid selection is communicated back to the agentapplication 20 and/or to the destination 34. When the grid selection isreceived (by either the agent application 20 and/or the destination 34),the width and height of the display device 96 may be calculated. Thewidth and height are calculated based on the font size and the distancefrom the selected link to an upper left portion of the web page.

FIGS. 16 and 17 are schematics illustrating more non-session approachesutilizing the present invention. Here, when content is successfullyadapted, the agent application 20 shares successful header information.As FIG. 16 illustrates, when the agent application 20 receives theresponse 92 from the web server 90, the response 92 indicates that thecontent adaptation is successful (or unsuccessful). Because the agentapplication 20 created and optimized the condensed HTTP request 70, theagent application 20 knows what optimized header information issuccessful (or unsuccessful). When the response 92 indicates that therequested content was successfully adapted, the agent application 20retrieves the successful profile header 126 from memory. The agentapplication 20 then sends the successful profile header 126 in a message128 to the communications device 30. Because the web server 90successfully adapted the requested content, the agent application 20passes along the profile header 126 used in that successful adaptation.The user agent 98 may then use that same profile header 126 for futurerequests. Additionally, those future requests need not include theentire CC/PP information (shown as reference numeral 64 in FIGS. 6-13).Those future requests need only include the successful profile header126.

FIG. 17 illustrates responsive changes to the user agent 98. When theuser agent 98 changes, the HTTP request 74 from the communicationsdevice 30 includes revised CC/PP information 130. The agent application20 condenses the revised CC/PP information 130 (as above described) andsends the condensed HTTP request 70 to the destination 34 (e.g., the webserver 90). If the web server 90 successfully adapts the requestedcontent, the agent application 20 receives the successful response 92.The agent application 20 again return sends the successful profileheader 126 in the message 128 to the communications device 30. The agentapplication 20 again passes along the profile header 126 used in thatsuccessful adaptation.

FIGS. 18-22 are schematics further illustrating the condensing of amessage, according to the present invention. As FIG. 18 illustrates,here the computer 24 is a wireless access point 132, such that the agentapplication 20 stores within the memory 22 of the wireless access point132. The communications device 30 establishes a session with thewireless access point 132. The user agent 98 sends the HTTP request 74to the wireless access point 132. The HTTP request 74 may include one ormore profile headers and profile difference headers, as is known. Theagent application 20 then condenses and produces the condensed HTTPrequest 70. The agent application 20 then forwards the condensed HTTPrequest 70 to the destination 34, as above explained. The agentapplication 20 receives the response 92 and sends the message 126 to theuser agent 98. The agent application 20 again return sends thesuccessful profile header 128 (“CC_PP_PROFILE”) in the message 126 tothe communications device 30. The agent application 20, in other words,informs the user agent 98 of the optimized profile information acceptedby the destination 34.

FIG. 19 illustrates the condensed HTTP request 70. FIG. 19 illustratesthe wireless access point 132 receiving the following decoded HTTPrequest 70.

GET /video.avi HTTP/1.1 Host: www.flashpoint.com Opt:“http://www.w3.org/1999/06/24-CCPPexchange” ; ns=19 19-Profile:“http://www.flashpoint.com/hw”, “http://www.flashpoint.com/sw”, “1-P1GRkSjKK50aTWXXndFcSQ==” 19-Profile-Diff-1: <?xml version=“1.0”?> <RDFxmlns:RDF=“http://www.w3C.org/TR/WD-rdf-syntax#”   xmlns:PRF=“http://www.w3C.org/TR/WD-profile-vocabulary#”>  <RDF:Bag>  <RDF:Description about=“HardwarePlatform”    PRF:Default=“http://www.nokia.com/profiles/2160”    PRF:Memory=“32mB” />   <RDF:Description about=“SoftwarePlatform”    PRF:Default=“http://www.symbian.com/profiles/pda”    PRF:Sound=“Off”     PRF:Images=“Off” />   <RDF:Descriptionabout=“EpocEmail”      PRF:Default=     “http://www.symbian.com/epoc/profiles/epocemail” />  <RDF:Description about=“EpocCalendar”     PRF:Default=“http://www.symbian.com/epoc/profiles/epoccal”/>   <RDF:Description=“UserPreferences” PRF:Language=“English” /> </RDF:Bag> </RDF>The agent application 20 collapses that verbose HTTP request 74 into thefollowing condensed HTTP request 70.

GET /video.avi HTTP/1.1 Host: www.flashpoint.com Opt:“http://www.w3.org/1999/06/24-CCPPexchange” ; ns=19 19-Profile:“http://www.flashpoint.com/hw”, “http://www.flashpoint.com/sw”,“http://66.83.118.224/profile-diff.xml”The Internet Protocol address 76 (“66.83.118.224”) represents thewireless access point 132. The file 80 (“profile-diff.xml”) representsthe removed CC/PP information 68. The reader should know that the aboveexample represents the decoded representations of the HTTP request 70and the condensed HTTP request 70. Remember, the communications device(shown as reference numeral 30) sends and receives messages usingwireless session protocol. This wireless session protocol has an encodedbinary format. The examples herein represent the decoded representationsof the wireless session protocol.

FIG. 20 illustrates the message 126. As FIG. 19 illustrated, the agentapplication 20 then forwards the condensed HTTP request 70 to thedestination 34. The agent application 20 then receives the response 92and sends the message 126 to the user agent 98. The agent application 20returns the successful profile header 128 (“CC_PP_PROFILE”) in themessage 126 to the user agent 98. The agent application 20 thus informsthe user agent 98 of the profile information accepted by the destination34. FIG. 20 then, illustrates the wireless access point 132communicating the following decoded message 126 to the communicationsdevice 30. Again, the message 126 represents the decoded version of thewireless session protocol format.

HTTP/1.1 200 OK Content-Type: video/x-msvideo Last-Modified: Mon, 08 Aug2005 20:52:10 GMT Expires: Sun, 17 Jan 2038 19:14:07 GMT Content-Length:23123123 Date: Fri, 02 Dec 2005 19:24:05 GMT CC_PP_PROFILE:http://66.83.118.224/profile.xml .... ....

An alternative embodiment hands a result to the wireless access point132. The agent application 20 may first receive decoded message 126. Theagent application 20 may then send the message 126 to the wirelessaccess point 132. In other words, the wireless access point 132 has twocomponents—the agent application 20 and the conventional WAPcomponentry. When the communication device 30 sends a request to thewireless access point 132, the communications device 30 communicateswith the conventional WAP component. When the conventional WAPcomponentry sends an HTTP request, the conventional WAP componentryhands the request to the agent application 20 for HTTP formatting.Likewise, when an HTTP response is received (perhaps via the Internet),the response is first processed by agent application 20, and then theagent application 20 hands it to the conventional WAP componentry.

FIG. 21 illustrates the successful profile header 128. When the wirelessaccess point 132 receives the response 92, the agent application sendsthe message 126. When the communications device 30 (e.g., the cellularphone 88) receives the message 126, a processor 134 in thecommunications device 30 associates the successful profile header 128(“CC_PP_PROFILE”) to the profile information used with the request. Whenthe user agent 98 issues a new HTTP request 136, the user agent 98 usesthe successful profile header 128 (“CC_PP_PROFILE”) in the new HTTPrequest 136.

GET /video.avi HTTP/1.1 Host: www.flashpoint.com Opt:“http://www.w3.org/1999/06/24-CCPPexchange” ; ns=19 19-Profile:“http://66.83.118.224/profile-diff.xml”Should the profile information then change, the communications device 30sends the new profile information and associates a new successfulprofile header (as FIG. 16 explained). If the communications device 30frequently changes its profile information, the user agent 98 wouldfirst determine whether the current profile already has an associatedsuccessful profile header. (A session-based approach, on the other hand,would repeatedly send each change in profile information.)

The wireless access point 132 receives the new HTTP request 136. Theagent application 20 detects that the new HTTP request 136 contains aprofile reference in the profile header. The wireless access point 132notices the profile reference's IP address (“66.83.118.224”) isassociated with itself, so the agent application 20 queries the memory22. If the profile filename (“profile.xml”) exists in the memory 22, theagent application 20 does nothing to the new HTTP request 136 and sendsit to the destination 34 (e.g., the web server 90).

FIG. 22 illustrates an HTTP response 138. When the profile filename doesnot exist in the memory 22, the agent application 20 sends a return code140 in the HTTP response 138 to the communications device 30. The code140 indicates that the referenced profile no longer exists, so a secondnew HTTP request should be sent. This second new HTTP request shouldinclude the profile header and the profile difference headers identifiedin the HTTP response 138.

FIG. 23 is another schematic illustrating the condensing of a message,according to the present invention. Because FIGS. 21 and 23 are similar,FIG. 23 is only briefly described. When the wireless access point 132receives the new HTTP request 136, the agent application 20 detects thatthe new HTTP request 136 contains the profile reference in the profileheader (“http://66.83.118.224/profile-diff.xml”). Here, however, theagent application 20 skips a query of the memory 22. That is, the agentapplication 20 does not query to determine whether the profile(“profile-diff.xml”) exists in the memory 22. Here the agent application20 simply forwards the new HTTP request 136 to the destination 34. Whenthe destination 34 attempts to fetch the referenced profile(“profile-diff.xml”), the wireless access point 132 may, or may not,have stored the profile. (Remember, in this example, no query wasperformed to confirm that the memory 22 stores the profile.) If theagent application 20 cannot retrieve and return the referenced profile(“profile-diff.xml”), the agent application 20 may retrieve thereferenced profile from the communications device 30 or from some otherremote location. The agent application 20, alternatively, may forwardthe new HTTP request 136 to the destination 34 and, on another thread,check if the referenced profile exists. If the referenced profile(“profile-diff.xml”) does not exist, the agent application 20 may fetchthat profile in a separate thread and store it before the destination 34requests it.

The present invention, then, is different from session based approaches.Session based approaches (such as the Wireless Application Group's UserAgent Profile Specification) (or UAProf) store profile information in asession. In UAProf, a client device communicates profile informationwhen it creates a session to a WAP gateway. The client device then doesnot have to send profile information when issuing a HTTP request.However, the gateway is responsible for storing the profile andinjecting the profile into client HTTP requests. A WAP gateway must alsoaccommodate suspension and resumption of a WSP session. Basically theWAP gateway may have to maintain a long term session, thus cachingprofiles for a long time. There may be hundreds, thousands, evenmillions of devices communicating via the WAP gateway and the gatewaymust maintain profile information for each device. If the reader desiresmore information on session-based approaches, the reader is invited toconsult the Wireless Application Group's User Agent ProfileSpecification, available from available from the Open Mobile Alliance,4275 Executive Square, Suite 240, La Jolla, Calif. USA 92037, andincorporated herein by reference.

The present invention, however, is a session-less approach. The WAPgateway no longer is required to store profile information in eachsession it maintains. The WAP gateway, however, will store profileinformation (or delegate the storage to a remote location) but theprofile is session agnostic. More specifically, when the communicationdevice detects a successful profile (such as the profile header“CC_PP_PROFILE” illustrated in FIGS. 18, 20, and 21) it will use thesuccessful profile header on all subsequent HTTP requests. When the WAPgateway receives a HTTP using an optimized profile, the WAP gatewayneeds to do little processing work. What processing work that must bedone may be performed in a separate thread so as to streamline theuser's requesting thread. The agent application 20, if given a profileand profile differences (e.g., “Profile-Diffs”), the agent application20 may detect an existing, optimized profile to reference and,therefore, need not create and store a new profile. Because the presentinvention is session-less, a multitude of communications devices mayreference the same profile. The user's communications device 30 may evensimultaneously utilize more than one profile in the same session. Thesession based approach, however, may cause a thrashing between profiles.The wireless access point 132 is even freer to adjust its resources. Thewireless access point 132, for example, may remove some profiles to freememory space. The wireless access point 132 may also pre-fetch popularprofiles (perhaps from a third-party). Additionally, as wireless devicesbecome homogenized, the wireless access point 132 may only require asmall number of profiles. Because some manufacturers and their devicescapture a significant portion of the wireless market, a relativelyhomogenous set of profiles may serve a great number of devices. Thesession-less wireless access point 132, then, need not acquire a largenumber of profiles. The session approach cannot take advantage of thishomogeneity. Moreover, the session-less wireless access point 132 mayitself perform the optimizations described herein, or the session-lesswireless access point 132 may delegate the optimization work to anotherdevice. A hybrid concept could have the wireless access point 132perform the optimization work, yet, delegate storage of the optimizedprofiles to another device or location via the communications network32.

Peer devices may also be used to obtain profiles. The user'scommunications device 30 could wirelessly communicate with peer devicesvia the communications network 32. The communications device 30 couldquery a peer device for an acceptable profile. If the communicationsdevice 30, for example, has BLUETOOTH® capability, the communicationsdevice 30 could query another device for profiles. The communicationsdevice 30 could query for that peer device's “CC_PP_PROFILE” (asillustrated in FIGS. 18, 20, and 21). The communications device 30 maythen communicate with the wireless access point 132 using aCC_PP_PROFILE value gathered from a nearby peer device.

As the communications device 30 roves to a new wireless access point,profiles may be reused. When the communications device 30 moves betweenwireless access points, the user agent 98 may continue using the sameCC_PP_PROFILE value. The referenced profile is already optimized, so thenew wireless access point cannot further condense the CC/PP information.The new wireless access point may simply pass the profile header valuewith each HTTP request, with no action required. The new wireless accesspoint may optionally recognize the optimized profile header and fetchthe profile from the original wireless access point hosting it and storethe profile itself The new wireless access point thereby ensures thatthe profile is locally available.

FIG. 24 depicts another possible operating environment for the exemplaryembodiments. FIG. 24 is a block diagram showing the agent application 20residing in the computer 24 (such as the proxy server 72 and thewireless access point 132). FIG. 24, however, may also represent a blockdiagram of any computer, communications device, or processor-controlleddevice. The agent application 20 operates within a system memory device.The agent application 20, for example, is shown residing in a memorysubsystem 152. The agent application 20, however, could also reside inflash memory 154 or peripheral storage device 156. The computer system24 also has one or more central processors 158 executing an operatingsystem. The operating system, as is well known, has a set ofinstructions that control the internal functions of the computer system24. A system bus 160 communicates signals, such as data signals, controlsignals, and address signals, between the central processor 158 and asystem controller 162. The system controller 162 provides a bridgingfunction between the one or more central processors 158, a graphicssubsystem 164, the memory subsystem 152, and a PCI (PeripheralController Interface) bus 166. The PCI bus 166 is controlled by aPeripheral Bus Controller 168. The Peripheral Bus Controller 168 is anintegrated circuit that serves as an input/output hub for variousperipheral ports. These peripheral ports could include, for example, akeyboard port 170, a mouse port 172, a serial port 174, and/or aparallel port 176 for a video display unit, one or more external deviceports 178, and external hard drive ports 180 (such as IDE, ATA, SATA, orSCSI). The Peripheral Bus Controller 168 could also include an audiosubsystem 182. Those of ordinary skill in the art understand that theprogram, processes, methods, and systems described herein are notlimited to any particular computer system or computer hardware.

One example of the central processor 158 is a microprocessor. AdvancedMicro Devices, Inc., for example, manufactures a full line of ATHLON™microprocessors (ATHLON™ is a trademark of Advanced Micro Devices, Inc.,One AMD Place, P.O. Box 3453, Sunnyvale, Calif. 94088-3453,408.732.2400, 800.538.8450, www.amd.com). The Intel Corporation alsomanufactures a family of X86 and P86 microprocessors (Intel Corporation,2200 Mission College Blvd., Santa Clara, Calif. 95052-8119,408.765.8080, www.intel.com). Other manufacturers also offermicroprocessors. Such other manufacturers include Motorola, Inc. (1303East Algonquin Road, P.O. Box A3309 Schaumburg, ILL. 60196,www.Motorola.com), International Business Machines Corp. (New OrchardRoad, Armonk, N.Y. 10504, (914) 499-1900, www.ibm.com), and TransmetaCorp. (3940 Freedom Circle, Santa Clara, Calif. 95054,www.transmeta.com). Those skilled in the art further understand that theprogram, processes, methods, and systems described herein are notlimited to any particular manufacturer's central processor.

According to an exemplary embodiment, any of the WINDOWS® (WINDOWS® is aregistered trademark of Microsoft Corporation, One Microsoft Way,Redmond Wash. 98052-6399, 425.882.8080, www.Microsoft.com) operatingsystems may be used. Other operating systems, however, are alsosuitable. Such other operating systems would include the UNIX® operatingsystem (UNIX® is a registered trademark of the Open Source Group,www.opensource.org), the UNIX-based Linux operating system, WINDOWS NT®,and Mac® OS (Mac® is a registered trademark of Apple Computer, Inc., 1Infinite Loop, Cupertino, Calif. 95014, 408.996.1010, www.apple.com).Those of ordinary skill in the art again understand that the program,processes, methods, and systems described herein are not limited to anyparticular operating system.

The system memory device (shown as memory subsystem 152, flash memory154, or peripheral storage device 156) may also contain an applicationprogram. The application program cooperates with the operating systemand with a video display unit (via the serial port 174 and/or theparallel port 176) to provide a Graphical User Interface (GUI). TheGraphical User Interface typically includes a combination of signalscommunicated along the keyboard port 170 and the mouse port 172. TheGraphical User Interface provides a convenient visual and/or audibleinterface with a user of the computer system 24.

FIG. 25 is a schematic illustrating various communications devices 30that may interface with the agent application 20, according to thepresent invention. The agent application 20 is again stored within thememory 22 of the computer 24, and the processor 26 executes the agentapplication 20. Here, however, the communications device 30 mayadditionally store and execute a complimentary agent application 200.The complimentary agent application 200 interfaces with or cooperateswith the agent application 20 stored in the computer 24. FIG. 25, forexample, illustrates that the agent application 20 may entirely orpartially operate within a personal digital assistant (PDA) 202, aGlobal Positioning System (GPS) device 204, an interactive television206, an Internet Protocol (IP) phone 208, a pager 210, acellular/satellite phone 212, or any computer system and/orcommunications device utilizing a digital signal processor (DSP) 214.The communications device 30 may also include watches, radios, vehicleelectronics, clocks, printers, gateways, and other apparatuses andsystems.

Moreover, the exemplary embodiments may be applied regardless ofnetworking environment. The communications network 32 may be a cablenetwork operating in the radio-frequency domain and/or the InternetProtocol (IP) domain. The communications network 32, however, may alsoinclude a distributed computing network, such as the Internet (sometimesalternatively known as the “World Wide Web”), an intranet, a local-areanetwork (LAN), and/or a wide-area network (WAN). The communicationsnetwork 32 may include coaxial cables, copper wires, fiber optic lines,and/or hybrid-coaxial lines. The communications network 32 may eveninclude wireless portions utilizing any portion of the electromagneticspectrum and any signaling standard (such as the I.E.E.E. 802 family ofstandards, GSM/CDMA/TDMA or any cellular standard, and/or the ISM band).The concepts described herein may be applied to any wireless/wirelinecommunications network, regardless of physical componentry, physicalconfiguration, or communications standard(s).

The agent application (shown as reference numeral 20 in FIGS. 1-15) maybe physically embodied on or in a computer-readable medium. Thiscomputer-readable medium may include CD-ROM, DVD, tape, cassette, floppydisk, memory card, and large-capacity disk (such as IOMEGA®, ZIP®,JAZZ®, and other large-capacity memory products (IOMEGA®, ZIP®, andJAZZ® are registered trademarks of Iomega Corporation, 1821 W. IomegaWay, Roy, Utah 84067, 801.332.1000, www.iomega.com). Thiscomputer-readable medium, or media, could be distributed to end-users,licensees, and assignees. These types of computer-readable media, andother types not mention here but considered within the scope of thepresent invention, allow the agent application to be easilydisseminated. A computer program product comprises the agent applicationstored on the computer-readable medium. The agent application comprisescomputer-readable instructions/code for accessing files, as hereinaboveexplained.

While the exemplary embodiments have been described with respect tovarious features, aspects, and embodiments, those skilled and unskilledin the art will recognize the exemplary embodiments are not so limited.Other variations, modifications, and alternative embodiments may be madewithout departing from the spirit and scope of the exemplaryembodiments.

1. A computer-implemented method of condensing a request for content,comprising: receiving, by a computer, from a communications device, arequest for content destined for a server, wherein the request forcontent includes a header comprising a first CompositeCapability/Preference Profile (CC/PP); removing, by the computer, aportion of the header of the request for content; storing, by thecomputer, the portion in memory; inserting, by the computer, into theheader a reference to the stored portion; sending, by the computer, therequest for content to the server; receiving, by the computer, aresponse from the server in response to the request for content;determining that the response indicates that the requested content wasnot adapted, and in response, not providing the response to thecommunications device such that the communications device is notinformed that the requested content was not adapted; selecting, by thecomputer, a second CC/PP from a plurality of CC/PPs; and resending therequest for content to the server with the second CC/PP, wherein thesecond CC/PP is different from the first CC/PP.
 2. A method according toclaim 1, wherein if the response indicates that the requested contentwas not adapted, canceling the request for content.
 3. A methodaccording to claim 1, further comprising comparing the response to theremoved portion stored in memory, and if the response is compatible tothe removed portion, then forwarding the requested content.
 4. A methodaccording to claim 1, further comprising exchanging a set of rules thatdetermines when to cancel the request for content.
 5. A method accordingto claim 1, wherein if the response indicates that the requested contentis successfully adapted, then sending a successful profile header to arequestor.
 6. A system, comprising: an agent application stored inmemory; and a processor communicating with the memory: the processorreceiving, from a communications device, a request for content destinedfor a server, wherein the request for content includes a headercomprising a first Composite Capability/Preference Profile (CC/PP); theprocessor removing a portion of the header of the request for contentand storing the portion in the memory; the processor inserting into theheader a reference to the stored portion; the processor sending therequest for content to the server; the processor receiving a responsefrom the server in response to the request for content; the processordetermining that the response indicates that the requested content wasnot adapted, and in response, not providing the response to thecommunications device such that the communications device is notinformed that the requested content was not adapted; the processorselecting a second CC/PP from a plurality of CC/PPs; and the processorresending the request for content to the server with the second CC/PP,wherein the second CC/PP is different from the first CC/PP.
 7. A systemaccording to claim 6, wherein if the response indicates that therequested content was not adapted, the processor cancels the request forcontent.
 8. A system according to claim 6, wherein the processorcompares the response to the removed portion stored in memory, and ifthe response is compatible to the removed portion, then the processorforwards the requested content.
 9. A system according to claim 6,wherein the processor exchanges a set of rules that determines when tocancel the request for content.
 10. A system according to claim 6,wherein if the response indicates that the requested content issuccessfully adapted, then the processor sends a successful profileheader to a requestor.
 11. A computer program product comprising acomputer-readable medium storing instructions for performing the steps:receiving, from a communications device, a request for content destinedfor a server, wherein the request for content includes a headercomprising a first Composite Capability/Preference Profile (CC/PP);removing a portion of the header of the request for content; storing theportion in memory; inserting into the header a reference to the storedportion; sending the request for content to the server; receiving aresponse from the server in response to the request for content,determining that the response indicates that the requested content wasnot adapted, and in response, not providing the response to thecommunications device such that the communications device is notinformed that the requested content was not adapted; selecting a secondCC/PP from a plurality of CC/PPs; and resending the request for contentto the server with the second CC/PP, wherein the second CC/PP isdifferent from the first CC/PP.
 12. A computer program product accordingto claim 11, further comprising instructions for canceling the requestfor content when the response indicates that the requested content wasnot adapted.
 13. A computer program product according to claim 11,further comprising instructions for comparing the response to theremoved portion stored in memory, and if the response is compatible tothe removed portion, then forwarding the requested content.
 14. Acomputer program product according to claim 11, further comprisinginstructions for exchanging a set of rules that determines when tocancel the request for content.
 15. A computer program product accordingto claim 11, further comprising instructions for sending a successfulprofile header to a requestor if the response indicates that therequested content is successfully adapted.
 16. The method of claim 1,further comprising: receiving a second response from the serverindicating that the requested content was adapted; and and in responseto the second response, sending the second response to thecommunications device.
 17. The method of claim 1, further comprising:wherein the computer iteratively selects a different CC/PP from theplurality of CC/PPs and resends the request for content to the server anumber of times until the computer receives a response from the serverthat the requested content was adapted.
 18. The method of claim 1,wherein selecting, by the computer, the second CC/PP from the pluralityof CC/PPs further comprises: generating, by the computer, a messageidentifying at least the second CC/PP and a third CC/PP; sending themessage to the communications device; and receiving from thecommunications device a selection identifying the second CC/PP from theone of the second CC/PP and the third CC/PP.